package com.itheima.edu.info.mannager.service;

import com.itheima.edu.info.mannager.dao.StudentDao;
import com.itheima.edu.info.mannager.domain.Student;

/*业务员类
1.这里的所有的方法[功能]都是给客服使用的
2.如果业务涉及到要对数据仓库进行访问的话,则需要在业务员类中操作库管对象
3.该类中的核心作用是用于处理业务逻辑,例如:判断录入的ID是否存在
*
* */
public class StudentService {
    private static StudentDao studentDao = new StudentDao();

    public boolean addStudent(Student stu) {
        //添加学生对象

        //1.创建studentDao (库管)
        StudentDao studentDao = new StudentDao();

        //2.创建学生对象传递给StudentDao,库管中的addStudent方法
        //3.将返回值boolean 类型的结果.返还给studentController
        return studentDao.addStudent(stu);
    }

    //
    public boolean isExists(String id) {
        //让库管把仓库中的所有数据烦都拿来
        Student[] stuArray = studentDao.findAllStudent();
        //2定义一个标记:boolean flag = false
        boolean flag = false;
        //3.遍历数组元素,比对元素内容是否相等
        for (int i = 0; i < stuArray.length; i++) {
            Student stu = stuArray[i];
            //判断当前学生对象从不为空并且当前学生对象的学号和录入的学号是否一致
            if (stu != null && stu.getSid().equals(id)) {
                //一致说明存在
                flag = true;
                break;
            }
        }
        //4返回flag的值
        return flag;
    }

    //查看学生信息
    public Student[] findAllStudent() {
        // 1. 调用库管对象的findAllStudent获取学生对象数组
        Student[] allStudent = studentDao.findAllStudent();
        // 2. 判断数组中是否有学生信息 (有: 返回地址,  没有: 返回null)
        // 思路: 数组中只要存在一个不是null的元素, 那就代表有学生信息
        //先定义一个标记boolean ,只要有一个索引位置不为null,就修改标记为true.
        boolean flag = false;

        for (int i = 0; i < allStudent.length; i++) {
            Student stu = allStudent[i];
            if (stu != null) {
                flag = true;
                break;
            }
        }
        //根据flag 的值来决定当前方法的返回值
        if (flag) {
            //说明AllSstudent中有学生对象,这时返回allStudent即可
            return allStudent;
        } else {
            //flag为false.则 表示allstudent中全是null,一个学生对象都没有,这时返回值为
            return null;
        }
    }

    //删除学生学号
    public void deleteStudentById(String delId) {
        studentDao.deleteStudentById(delId);
    }

    //修改学生信息
    public void updateStudent(String updateId, Student newStu) {
        studentDao.updateStudent(updateId, newStu);
    }
    //删除学生信息
    public void deleteStudent(String delId) {
        studentDao.deleteStudentById(delId);
    }
}







